home *** CD-ROM | disk | FTP | other *** search
- This is the documentation file for the MODROM procedure. This procedure
- will modify the 8mhz AT rom dated 11/15/85 to eliminate speed problems
- with faster crystals or compatible clones running faster than 8mhz.
-
- The problem occurs because IBM put a speed check in the 8mhz BIOS
- to prevent faster crystals from being installed. At loaction 05A3
- in the unmodified BIOS is the following code:
-
- .
- .
- .
- ; ----- VERIFY SPEED/REFRESH RATES ( ERROR = 1 LONG AND 1 SHORT BEEP )
-
- XOR BL,BL ; CLEAR REFRESH CYCLE REPEAT COUNT
- XOR CX,CX ; INITIALIZE SPEED RATE REGISTER
- EVEN ; PLACE ON EVEN WORD BOUNDARY
- C34:
- IN AL,PORT_B ; READ REFRESH BIT REGISTER
- TEST AL,REFRESH_BIT ; MASK FOR BIT
- LOOPZ C34 ; DECREMENT LOOP COUNTER TILL ON
- C35:
- IN AL,PORT_B ; READ REFRESH BIT REGISTER
- TEST AL,REFRESH_BIT ; MASK FOR BIT
- LOOPNZ C35 ; DECREMENT LOOP COUNTER TILL OFF
-
- DEC BL ; DECREMENT REFRESH CYCLE REPEAT COUNT
-
-
- JNZ C34 ; REPEAT TILL CYCLE COUNT DONE
- CMP CX,RATE_UPPER ; CHECK FOR RATE BELOW UPPER LIMIT
- JAE C36 ; SKIP ERROR BEEP IF BELOW MAXIMUM
-
- C36E:
- MOV DX,0101H ; GET BEEP COUNTS FOR REFRESH ERROR
- CALL ERR_BEEP ; CALL TO POST ERROR BEEP ROUTINES
- HLT ; HALT SYSTEM - BAD REFRESH RATE
- C36:
- CMP CX,RATE_LOWER ; CHECK FOR RATE ABOVE LOWER LIMIT
- JA C36E ; GO TO ERROR BEEP IF BELOW MINIMUM
- .
- .
- .
- What we need to do is make the JAE C36 an unconditional jump, JMP C36,
- and the JA C36E a NOP (no operation), NOP NOP.
- This completely eliminates speed checking from the diagnostics (POST).
-
- Some machines get a 108 POST error. Here the bios post routines are
- checking the timer channel that drives the speaker. There is a short
- code segment as follows:
-
- .
- .
- .
- OUT TIMER+2,AL ; WRITE TIMER 2 COUNT - MSB
- JMP $+2 ; I/O DELAY
- IN AL,TIMER+2 ; GET THE LSB
- .
- .
- .
- After this code fragment is a test for AL containing the proper values.
- At 6 or 8mhz most machines have no problem, but, with the short delay
- inserted by the JMP $+2, at 10mhz the data doesn't have time to settle
- on the bus, so an incorrect value is read. To eliminate this bug we
- must change the JZ D7_D to to JMP D7_D. I've been running this way for
- months with no problem. If your speaker works, the timer channel is
- ok.
-
- To acomplish all this we must run a series of programs included here.
- First we must get the AT rom to disk. ROMSAVAT.EXE will do this. When
- run on an IBM AT, the BIOS rom is written to disk. Next we must
- modify the saved BIOS image. We will use DEBUG to do it with the
- command file provided. Next we must calculate a new checksum and
- split the BIOS image into the ODD and EVEN bytes. The AT has a 16 bit
- bus and needs 2 27256 EPROMS (200 ns or faster reccommended), one
- for each byte fetched. We will use CHKSUM64.EXE to do this step.
- Now burn ATROM.EEE (EVEN bytes) in one EPROM and ATROM.OOO (ODD BYTES)
- in the other. Now replace your current ROMS with the new EPROMS and
- no more speeding tickets!
-
- Remember - This works ONLY on the AT BIOS dated 11/15/85 !!!!!!!!!
-
- To run the procedure do the following:
-
- 1. Use ONLY an IBM AT with a BIOS dated 11/15/85
- 2. Copy DEBUG onto the diskette with the files provided.
- 3. Place the diskette in drive A:
- 4. Make A: the default drive
- 5. enter the command "MODROM"
- 6. Sit back and wait for a while, CHKSUM64 takes a while to run.
- 7. Burn your new EPROMS and put them in your machine.
- if they don't work, swap them. The ODD and EVEN sockets vary from
- machine to machine and the EPROMS won't work in the wrong sockets.
-
- The IBM BIOS won't work on SOME clones. I don't know why, but they won't